#!/user/bin/env python3
# -*- coding: utf-8 -*-
#-------------------------------------------------------------------------------
# @File : run.py
# @Time : 2022-06-23 10:38
# @Author : mojin
# @Email : 397135766@qq.com
# @Software : PyCharm
#-------------------------------------------------------------------------------
import pytest,subprocess,shutil

# 编写规则
# 编写pytest测试样例非常简单，只需要按照下面的规则：
# 测试文件以test_开头（以_test结尾也可以）
# 测试类必须以Test开头，并且不能带有init方法
# 测试函数以test_开头
# 断言使用基本的assert即可


# pipreqs . --encoding=utf8 --force #导出所需依赖
# pip3 install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
# pip3 install -r requirements.txt -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com
# pip install allure-pytest #报错ImportError: cannot import name 'get_testplan'

#pip3 install pytest-rerunfailures -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com
# pip3 install pytest-rerunfailures
# pip3 install pytest-repeat #失败重跑
# pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

# pytest.main()不带任何参数的main()运行当前目录下所有（test_*.py  和 *_test.py）
# pytest.main()：main中传入不同的指令用以执行指定测试用例
# -s: 显示程序中的print/logging输出
# -v: 丰富信息模式, 输出更详细的用例执行信息
# -q: 安静模式, 不输出环境信息
# -k：关键字匹配，用and区分：匹配范围（文件名、类名、函数名）   pytest.main (['-k','pp']) #'-k',' test_answer',
# (1)‘-s’：关闭捕捉，输出打印信息。
# (2)‘-v’:用于增长测试用例的冗长。
# (3)‘-k’ ：运行包含某个字符串的测试用例。如：pytest - k add XX.py 表示运行XX.py中包含add的测试用例。
# (4)‘q’:减小测试的运行冗长。
# (5)‘-x’:出现一条测试用例失败就退出测试。在调试阶段很是有用，当测试用例失败时，应该先调试经过，而不是继续执行测试用例。函数基础示例
# '-m finished','./test_case','--alluredir', './report/allure',     @pytest.mark.finished #用例标记 pytest -m "finished and commit" 测试时pytest -m "finished and commit"
# —allure-severities=blocker,critical用例严重级别执行
# reruns = 5：意思是失败重运行5次
# count = 3：意思是重复执行3次
#  --lf 叫--last-failed如果只想运行其中2个failed的和1个error用例，那么可以运行pytest - -lf，这样就只运行非passed的用例
#  --ff 叫--failed-first如果想先运行上次失败的，后运行其他通过的用例，那么可以运行pytest - -ff

try:
    shutil.rmtree("./target")  # 删除报告目录，删除后只能看到当前执行后的报告结果，不删除能看到执行的历史执行结果
except:
    pass


if __name__ == '__main__':

    pytest.main([ '-vs',"--alluredir","target/allure-results"])#'-k test_0003',#'./test_case',
    allure_html = 'allure generate ./target/allure-results -o ./target/allure-report --clean'  # 生成allure的html报告
    subprocess.call(allure_html, shell=True)  # 生成allure的html报告

